#ifndef GROUPDETAILPAGE_H
#define GROUPDETAILPAGE_H

#include <QWidget>
#include <QLabel>
#include <QListWidget>
#include <QPushButton>

namespace Ui {
class GroupDetailPage;
}

/**
 * @brief 群聊详情页面类，展示群聊详情和管理群聊
 */
class GroupDetailPage : public QWidget
{
    Q_OBJECT

public:
    /**
     * @brief 构造函数，初始化群聊详情页面
     * @param parent 父窗口指针
     */
    explicit GroupDetailPage(QWidget *parent = nullptr);

    /**
     * @brief 析构函数，释放资源
     */
    ~GroupDetailPage();

    /**
     * @brief 设置群聊详情信息
     * @param groupId 群聊ID
     * @param groupName 群聊名称
     * @param createTime 创建时间
     * @param members 群成员列表
     */
    void setGroupInfo(const QString &groupId, const QString &groupName, const QString &createTime,
                      const QList<QPair<QString, QString>> &members);

signals:
    /**
     * @brief 返回群聊列表页面信号
     */
    void backToGroupList();

    /**
     * @brief 进入群聊会话信号
     * @param groupId 群聊ID
     * @param groupName 群聊名称
     */
    void enterConversation(const QString &groupId, const QString &groupName);

    /**
     * @brief 退出群聊信号
     * @param groupId 群聊ID
     */
    void exitGroup(const QString &groupId);

private slots:
    /**
     * @brief 会话按钮点击事件处理
     */
    void onChatClicked();

    /**
     * @brief 退出按钮点击事件处理
     */
    void onExitClicked();

    /**
     * @brief 返回按钮点击事件处理
     */
    void onBackClicked();

private:
    Ui::GroupDetailPage *ui;          ///< UI对象指针
    QLabel *m_groupIdLabel;           ///< 群聊ID标签
    QLabel *m_groupNameLabel;         ///< 群聊名称标签
    QLabel *m_createTimeLabel;        ///< 创建时间标签
    QListWidget *m_memberList;        ///< 群成员列表
    QPushButton *m_chatBtn;           ///< 会话按钮
    QPushButton *m_exitBtn;           ///< 退出按钮
    QPushButton *m_backBtn;           ///< 返回按钮
    QString m_groupId;                ///< 群聊ID
    QString m_groupName;              ///< 群聊名称

    /**
     * @brief 初始化UI组件
     */
    void initUI();
};

#endif // GROUPDETAILPAGE_H

